VMware ESXi VMFS数据存储恢复教程:虚拟机磁盘损坏/删除后如何找回
VMware ESXi是企业虚拟化平台的核心组件,运行着大量关键业务虚拟机。当虚拟机被误删、VMFS数据存储损坏、或VMDK磁盘文件丢失时,如何快速恢复数据?本文将系统介绍ESXi环境下的数据恢复方法。
一、ESXi数据丢失常见场景
- 虚拟机被误删除:管理员误操作删除了虚拟机
- VMFS数据存储损坏:存储设备故障导致VMFS文件系统损坏
- VMDK磁盘文件损坏:虚拟磁盘文件因意外断电、存储故障等损坏
- 快照链断裂:快照文件损坏导致虚拟机无法启动
- ESXi主机故障:主机崩溃后需要恢复虚拟机数据
- 存储LUN丢失:SAN/NAS存储连接中断导致数据存储不可见
二、紧急处理原则
发现数据丢失后,立即执行以下操作:
- 停止写入:不要在该数据存储上创建新虚拟机或写入数据
- 不要格式化:即使ESXi提示数据存储需要格式化,也不要执行
- 断开连接:如果可能,将问题LUN从ESXi主机断开
- 记录信息:记录数据存储名称、VMFS版本、虚拟机清单
- 创建镜像:在操作前对存储设备进行完整镜像备份
三、场景一:虚拟机被误删除后的恢复
方法1:从vCenter回收站恢复(vSphere 6.7+)
vSphere 6.7引入了虚拟机回收站功能:
- 登录vCenter Server
- 导航到"存储" > 选择对应数据存储
- 查看"回收站"或"最近删除"
- 找到被删除的虚拟机
- 右键选择"恢复"
注意:回收站保留时间有限(默认30天),且需要vCenter支持。
方法2:通过VMFS浏览器手动恢复
如果虚拟机文件还在数据存储上(只是从清单中移除):
- 登录ESXi Host Client(https://esxi-ip)
- 导航到"存储" > "数据存储浏览器"
- 浏览数据存储目录
- 找到虚拟机的文件夹(包含.vmx、.vmdk等文件)
- 右键.vmx文件,选择"注册虚拟机"
- 虚拟机将重新出现在清单中
方法3:通过命令行恢复
SSH登录ESXi主机:
# 列出数据存储
esxcli storage filesystem list
# 挂载数据存储(如果未挂载)
esxcli storage vmfs snapshot mount -l "DatastoreName"
# 浏览数据存储内容
ls -la /vmfs/volumes/DatastoreName/
# 注册虚拟机
vim-cmd solo/registervm /vmfs/volumes/DatastoreName/VMFolder/VMName.vmx
四、场景二:VMFS数据存储损坏恢复
诊断VMFS状态:
# 查看存储设备
esxcli storage core device list
# 检查VMFS状态
esxcli storage vmfs extent list
# 查看数据存储信息
esxcli storage filesystem list
方法1:使用vmfs-tools(Linux环境)
在Linux系统上安装vmfs-tools来访问损坏的VMFS:
# 安装vmfs-tools
sudo apt install vmfs-tools
# 查看VMFS卷信息
sudo vmfs-fuse -o allow_other /dev/sdX /mnt/vmfs
# 如果vmfs-fuse无法挂载,尝试只读模式
sudo vmfs-fuse -o ro /dev/sdX /mnt/vmfs
方法2:使用专业VMFS恢复工具
推荐工具:
- DiskInternals VMFS Recovery:专业VMFS数据恢复软件
- ReclaiMe Free RAID Recovery:免费RAID和VMFS恢复工具
- SysTools VMFS Recovery:商业VMFS恢复解决方案
- UFS Explorer:支持VMFS的专业数据恢复工具
方法3:VMFS元数据修复
如果VMFS元数据损坏但数据区完好:
# 在ESXi上检查VMFS(只读检查)
vmkfstools --checkfs /vmfs/volumes/DatastoreName
# 尝试修复(谨慎使用)
vmkfstools --checkfs --repair /vmfs/volumes/DatastoreName
警告:修复操作可能导致数据丢失,务必先创建镜像。
五、场景三:VMDK虚拟磁盘文件损坏恢复
检查VMDK文件完整性:
# 检查VMDK描述文件
cat /vmfs/volumes/DatastoreName/VMName/VMName.vmdk
# 验证虚拟磁盘
vmkfstools -x check /vmfs/volumes/DatastoreName/VMName/VMName.vmdk
修复VMDK磁盘:
# 尝试修复VMDK
vmkfstools -x repair /vmfs/volumes/DatastoreName/VMName/VMName.vmdk
从损坏的VMDK提取数据:
如果VMDK无法修复,可以尝试挂载提取数据:
# 在Linux上使用qemu-img转换
qemu-img convert -f vmdk broken.vmdk -O raw recovered.img
# 挂载raw镜像
sudo mount -o ro,loop recovered.img /mnt/recovery
使用vmdk工具恢复:
# 在Linux上使用vmware-vdiskmanager
vmware-vdiskmanager -R /path/to/broken.vmdk
六、场景四:快照链损坏恢复
快照链损坏是ESXi常见问题,表现为虚拟机无法启动或快照合并失败。
诊断快照链:
# 查看快照信息
vim-cmd vmsvc/get.snapshot
# 查看VMDK链
ls -la /vmfs/volumes/DatastoreName/VMName/*-delta.vmdk
修复快照链:
- 方法1:删除损坏的快照
- 在vCenter中尝试"删除所有快照"
- 如果失败,使用命令行:
`bash
vim-cmd vmsvc/snapshot.removeall
`
- 方法2:手动合并快照
- 停止虚拟机
- 使用vmkfstools合并:
`bash
vmkfstools -i snapshot-delta.vmdk merged.vmdk
`
- 方法3:从基础磁盘恢复
- 如果快照链完全损坏,从基础磁盘(不带-delta的.vmdk)恢复
- 会丢失快照之后的数据变更
七、场景五:ESXi主机故障后恢复虚拟机
当ESXi主机无法启动,需要从存储恢复虚拟机:
步骤1:将存储连接到新ESXi主机
- 确保存储设备(SAN LUN、iSCSI、NFS)可访问
- 在新ESXi主机上重新扫描存储
- 数据存储应自动挂载(如果VMFS完好)
步骤2:重新注册虚拟机
# 浏览数据存储
ls /vmfs/volumes/
# 找到虚拟机目录
ls /vmfs/volumes/DatastoreName/VMName/
# 注册虚拟机
vim-cmd solo/registervm /vmfs/volumes/DatastoreName/VMName/VMName.vmx
步骤3:处理UUID冲突
如果虚拟机UUID冲突:
# 编辑.vmx文件,添加或修改
echo 'uuid.action = "keep"' >> /vmfs/volumes/DatastoreName/VMName/VMName.vmx
八、场景六:使用存储快照恢复
如果底层存储支持快照(如NetApp、Dell EMC、HPE 3PAR):
- 登录存储管理界面
- 找到对应LUN的快照
- 将LUN快照恢复或挂载为新LUN
- 在ESXi上重新扫描存储
- 浏览恢复的LUN,注册虚拟机
注意事项:
- 存储快照恢复会覆盖当前LUN数据
- 建议将快照挂载为只读新LUN,从中提取数据
- 恢复后检查虚拟机一致性
九、预防措施
- 定期备份:使用Veeam、Commvault等工具定期备份虚拟机
- 启用vSphere HA:配置高可用性,自动故障转移
- 使用vSAN:分布式存储提供数据冗余
- 存储快照:利用底层存储快照功能
- 监控告警:配置存储健康监控和告警
- 测试恢复:定期进行灾难恢复演练
- 文档记录:记录虚拟机清单、数据存储映射关系
十、推荐工具汇总
| 工具 | 功能 | 适用场景 |
|------|------|----------|
| vmkfstools | VMDK管理、检查、修复 | VMDK损坏 |
| vmfs-tools | Linux下访问VMFS | VMFS恢复 |
| DiskInternals VMFS Recovery | 专业VMFS恢复 | 数据存储损坏 |
| Veeam Backup | 虚拟机备份恢复 | 日常备份 |
| UFS Explorer | 多文件系统恢复 | 复杂恢复场景 |
| R-Studio | 专业数据恢复 | 文件级恢复 |
十一、常见问题
Q:虚拟机从清单中移除和删除有什么区别?
A:从清单移除只是取消注册,文件还在数据存储上,可以重新注册。删除会删除所有文件,恢复难度更大。
Q:VMFS数据存储显示为"不活动"怎么办?
A:可能是存储连接问题。检查存储设备连接、重新扫描存储适配器、检查LUN权限。如果VMFS元数据损坏,需要使用vmfs-tools修复。
Q:VMDK文件变成0字节还能恢复吗?
A:0字节通常意味着文件被截断或覆盖。如果有快照,可以从快照链中恢复。否则需要专业工具尝试从磁盘底层恢复。
Q:ESXi主机重装后虚拟机还在吗?
A:虚拟机数据存储在外部存储(SAN/NAS/本地磁盘)上,重装ESXi不影响。重新连接存储并注册虚拟机即可。
Q:VMFS 5和VMFS 6恢复有区别吗?
A:VMFS 6使用自动空间回收(UNMAP),删除文件后空间可能被快速回收,恢复窗口更短。建议使用支持VMFS 6的恢复工具。
总结
VMware ESXi环境下的数据恢复关键在于"快速响应"和"正确方法"。虚拟机误删后优先从清单重新注册;VMFS损坏时使用专业工具修复;VMDK损坏时尝试vmkfstools修复或从快照恢复。最重要的是做好预防——定期备份、启用HA、利用存储快照,将数据丢失风险降到最低。遇到复杂情况时,建议联系VMware技术支持或专业数据恢复公司。